class Car():
    # CONSTRUCTOR
    def __init__(self, brand, max_speed, year) -> None:
        self.brand = brand
        self.max_speed = max_speed
        self.year = year
        self.fuel = 100
    
    # SETTERS
    def update_fuel(self, consumption) -> int:
        self.fuel -= consumption
        return self.fuel
    
    # GETTERS
    def get_brand(self) -> str:
        return self.brand

    
    def has_fuel(self) -> bool:
        if self.fuel < 0:
            return False
        elif self.fuel > 0:
            return True

    # OTHERS METHODS
    def drive(self): 
        pass

    def stop(self):
        pass

class ElectricCar(Car):
    # CONSTRUCTOR
    def __init__(self, brand, max_speed, year, battery_capacity) -> None:
        super().__init__(brand, max_speed, year) # Call the constructor of the parent class
        self.battery_capacity = battery_capacity

    # SETTERS
    def update_battery(self, consumption) -> int:
        self.battery_capacity -= consumption
        return self.battery_capacity

    # GETTERS
    def get_battery_capacity(self) -> int:
        return self.battery_capacity

    # OTHERS METHODS
    def drive(self):
        pass

    def stop(self):
        pass

class FamilyCar(Car):
    # CONSTRUCTOR
    def __init__(self, brand, max_speed, year, number_of_seats) -> None:
        super().__init__(brand, max_speed, year) # Call the constructor of the parent class
        self.number_of_seats = number_of_seats

    # SETTERS
    def update_seats(self, new_number_of_seats) -> int:
        self.number_of_seats = new_number_of_seats
        return self.number_of_seats

    # GETTERS
    def get_number_of_seats(self) -> int:
        return self.number_of_seats

    # OTHERS METHODS
    def drive(self):
        pass

    def stop(self):
        pass

class LuxuriousCar(Car):
    # CONSTRUCTOR
    def __init__(self, brand, max_speed, year, has_massage_seats) -> None:
        super().__init__(brand, max_speed, year) # Call the constructor of the parent class
        self.has_massage_seats = has_massage_seats

    # SETTERS
    def update_massage_seats(self, has_massage_seats) -> bool:
        self.has_massage_seats = has_massage_seats
        return self.has_massage_seats

    # GETTERS
    def get_has_massage_seats(self) -> bool:
        return self.has_massage_seats

    # OTHERS METHODS
    def drive(self):
        pass

    def stop(self):
        pass

if __name__ == '__main__':
    toyota = Car("Toyota", 180, 2020)
    print(toyota.get_brand())
    print("Initial fuel:", toyota.fuel)

    tesla = Car("Tesla", 250, 2022)